
/**
 * 发送 get 异步请求
 * @param {string} url      请求地址            
 * @param {object} params   请求参数
 * @param {fn} callback     回调函数    
 * @param {object} header   请求头设置
 * @param {string} dataType 判断后端返回数据类型
 * @returns promise
 * @author TH_HAN   2022/1/13
 * @version 1.0.0
 * 
 */


function get(url,params={},header={},datatype='json')
{
    const p = new Promise((resolve,reject)=>
    {
        const xhr = new XMLHttpRequest          //创建xhr对象

        xhr.onreadystatechange=()=>             //监控请求状态
        {
            if(xhr.readyState===4)              //后端返回数据
            {
                if(xhr.status===200)            //成功
                {
                    let res = xhr.responseText
                    switch (datatype)           //判断抓取数据类型
                    {
                        case 'json':
                            res=JSON.parse(res)
                            break;
                    
                        default:
                            break;
                    }
                    resolve(res)                //promise成功状态 保存res
                }else
                {
                    reject(xhr.status)          //promise失败状态 保存res
                }
            }
        }

            let tempArr = []
            for (let key in params)
            {
                tempArr.push(`${key}=${params[key]}`)
            }

        xhr.open('get',`${url}?${tempArr.join('&')}`)     //设置请求方式，请求地址以及参数

            for(let key in header)
            {
                xhr.setRequestHeader(key,header[key])//设置请求头
            }

        xhr.send(null)                          //发送请求
    })
    return p                                    //返回promise对象
}
    